{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "list_sample = [4, 2, 7, 1, 5, 8, 3, 6]\n",
    "list_sample = [ 4, 2, 1, 5, 3, 6,7,8]\n",
    "list_sample.sort()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "这是第1次运行：[2, 4]\n",
      "这是第2次运行：[2, 4, 7]\n",
      "这是第3次运行：[1, 2, 4, 7]\n",
      "这是第4次运行：[1, 2, 4, 7]\n",
      "这是第5次运行：[1, 2, 4, 7]\n",
      "这是第6次运行：[1, 2, 4, 7]\n",
      "这是第7次运行：[1, 2, 4, 7]\n",
      "这是第8次运行：[1, 2, 4, 5, 7]\n",
      "这是第9次运行：[1, 2, 4, 5, 7, 8]\n",
      "这是第10次运行：[1, 2, 4, 5, 7, 8]\n",
      "这是第11次运行：[1, 2, 4, 5, 7, 8]\n",
      "这是第12次运行：[1, 2, 4, 5, 7, 8]\n",
      "这是第13次运行：[1, 2, 3, 4, 5, 7, 8]\n",
      "这是第14次运行：[1, 2, 3, 4, 5, 7, 8]\n",
      "这是第15次运行：[1, 2, 3, 4, 5, 7, 8]\n",
      "这是第16次运行：[1, 2, 3, 4, 5, 7, 8]\n",
      "这是第17次运行：[1, 2, 3, 4, 5, 7, 8]\n",
      "这是第18次运行：[1, 2, 3, 4, 5, 7, 8]\n",
      "这是第19次运行：[1, 2, 3, 4, 5, 7, 8]\n",
      "这是第20次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n"
     ]
    }
   ],
   "source": [
    "#插入排序\n",
    "list_sample = [4, 2, 7, 1, 5, 8, 3, 6]\n",
    "list_new = list_sample[0:1]\n",
    "n = 1\n",
    "for i in list_sample[1:]:\n",
    "    if i <= list_new[0]:\n",
    "        list_new.insert(0,i)\n",
    "    elif i >= list_new[-1]:\n",
    "        list_new.append(i)\n",
    "    else:\n",
    "        for index,j in enumerate(list_new):\n",
    "            print(f'这是第{n}次运行：{list_new}')\n",
    "            n += 1\n",
    "            if i <= j and i >=list_new[index - 1]:\n",
    "                list_new.insert(index,i)   \n",
    "                break\n",
    "    print(f'这是第{n}次运行：{list_new}')\n",
    "    n += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "这是第1次运行：[2, 4]\n",
      "这是第2次运行：[2, 4, 7]\n",
      "这是第3次运行：[1, 2, 4, 7]\n"
     ]
    },
    {
     "ename": "UnboundLocalError",
     "evalue": "local variable 'index' referenced before assignment",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mUnboundLocalError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-12-04932f416e67>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     27\u001b[0m         \u001b[0mlist_new\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     28\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 29\u001b[1;33m         \u001b[0mindex\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfind_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlist_new\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     30\u001b[0m         \u001b[0mlist_new\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     31\u001b[0m         \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mf'这是第{n}次运行：{list_new}'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-12-04932f416e67>\u001b[0m in \u001b[0;36mfind_index\u001b[1;34m(list_sample, num, running_count, count)\u001b[0m\n\u001b[0;32m     13\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mmiddle_num\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mnum\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     14\u001b[0m             \u001b[0mnew_list\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlist_sample\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlist_sample\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m//\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 15\u001b[1;33m             \u001b[0mindex\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfind_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnew_list\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnum\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mrunning_count\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcount\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     16\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mmiddle_num\u001b[0m \u001b[1;33m>\u001b[0m \u001b[0mnum\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     17\u001b[0m             \u001b[0mnew_list\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlist_sample\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlist_sample\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m//\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-12-04932f416e67>\u001b[0m in \u001b[0;36mfind_index\u001b[1;34m(list_sample, num, running_count, count)\u001b[0m\n\u001b[0;32m     16\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mmiddle_num\u001b[0m \u001b[1;33m>\u001b[0m \u001b[0mnum\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     17\u001b[0m             \u001b[0mnew_list\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlist_sample\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlist_sample\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m//\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 18\u001b[1;33m             \u001b[0mfind_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnew_list\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnum\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mrunning_count\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcount\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     19\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     20\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-12-04932f416e67>\u001b[0m in \u001b[0;36mfind_index\u001b[1;34m(list_sample, num, running_count, count)\u001b[0m\n\u001b[0;32m     18\u001b[0m             \u001b[0mfind_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnew_list\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnum\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mrunning_count\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcount\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     19\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m     \u001b[1;32mreturn\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     21\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     22\u001b[0m \u001b[0mn\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mUnboundLocalError\u001b[0m: local variable 'index' referenced before assignment"
     ]
    }
   ],
   "source": [
    "#插入排序和二分法相结合\n",
    "list_sample = [4, 2, 7, 1, 5, 8, 3, 6]\n",
    "\n",
    "def list_insert(num,list_new = []):\n",
    "    if len(list_new) == 0 or num >= list_new[-1]:\n",
    "        list_new.append(num)\n",
    "        return list_new\n",
    "    elif num < list_new[0]:\n",
    "        list_new.insert(0,num)\n",
    "        return list_new\n",
    "    elif num < list_new[-1] and num > list_new[0]:\n",
    "        index = len(list_new) // 2\n",
    "        middle_num = list_new[index]\n",
    "        if middle_num > num and num >= list_new[index-1]:\n",
    "            list_new.insert(index,num)\n",
    "            return list_new\n",
    "        elif middle_num < num:\n",
    "            return list_new[:index] + list_insert(num,list_new[index:])\n",
    "        elif num < list_new[index-1]:\n",
    "            return  list_insert(num,list_new[:index-1]) + list_new[index-1:] \n",
    "\n",
    "list_new = []\n",
    "for num in list_sample:\n",
    "    list_new = list_insert(num,list_new)\n",
    "    print(list_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "这是第1次运行：[2, 4, 7, 1, 5, 8, 3, 6]\n",
      "这是第2次运行：[2, 4, 7, 1, 5, 8, 3, 6]\n",
      "这是第3次运行：[1, 4, 7, 2, 5, 8, 3, 6]\n",
      "这是第4次运行：[1, 4, 7, 2, 5, 8, 3, 6]\n",
      "这是第5次运行：[1, 4, 7, 2, 5, 8, 3, 6]\n",
      "这是第6次运行：[1, 4, 7, 2, 5, 8, 3, 6]\n",
      "这是第7次运行：[1, 4, 7, 2, 5, 8, 3, 6]\n",
      "这是第8次运行：[1, 4, 7, 2, 5, 8, 3, 6]\n",
      "这是第9次运行：[1, 2, 7, 4, 5, 8, 3, 6]\n",
      "这是第10次运行：[1, 2, 7, 4, 5, 8, 3, 6]\n",
      "这是第11次运行：[1, 2, 7, 4, 5, 8, 3, 6]\n",
      "这是第12次运行：[1, 2, 7, 4, 5, 8, 3, 6]\n",
      "这是第13次运行：[1, 2, 7, 4, 5, 8, 3, 6]\n",
      "这是第14次运行：[1, 2, 4, 7, 5, 8, 3, 6]\n",
      "这是第15次运行：[1, 2, 4, 7, 5, 8, 3, 6]\n",
      "这是第16次运行：[1, 2, 4, 7, 5, 8, 3, 6]\n",
      "这是第17次运行：[1, 2, 3, 7, 5, 8, 4, 6]\n",
      "这是第18次运行：[1, 2, 3, 7, 5, 8, 4, 6]\n",
      "这是第19次运行：[1, 2, 3, 5, 7, 8, 4, 6]\n",
      "这是第20次运行：[1, 2, 3, 5, 7, 8, 4, 6]\n",
      "这是第21次运行：[1, 2, 3, 4, 7, 8, 5, 6]\n",
      "这是第22次运行：[1, 2, 3, 4, 7, 8, 5, 6]\n",
      "这是第23次运行：[1, 2, 3, 4, 7, 8, 5, 6]\n",
      "这是第24次运行：[1, 2, 3, 4, 5, 8, 7, 6]\n",
      "这是第25次运行：[1, 2, 3, 4, 5, 8, 7, 6]\n",
      "这是第26次运行：[1, 2, 3, 4, 5, 7, 8, 6]\n",
      "这是第27次运行：[1, 2, 3, 4, 5, 6, 8, 7]\n",
      "这是第28次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n"
     ]
    }
   ],
   "source": [
    "#选择排序\n",
    "list_sample = [4, 2, 7, 1, 5, 8, 3, 6]\n",
    "n = 1\n",
    "for i in range(len(list_sample)):\n",
    "    for j in range(i+1,len(list_sample)):\n",
    "        if list_sample[i] > list_sample[j]:\n",
    "               list_sample[i],list_sample[j] = list_sample[j], list_sample[i]\n",
    "        print(f'这是第{n}次运行：{list_sample}')\n",
    "        n += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "列表分解结果 [2, 1, 3] [4] [7, 5, 8, 6]\n",
      "列表分解结果 [1] [2] [3]\n",
      "列表分解结果 [5, 6] [7] [8]\n",
      "列表分解结果 [] [5] [6]\n",
      "[1, 2, 3, 4, 5, 6, 7, 8]\n"
     ]
    }
   ],
   "source": [
    "#快速排序\n",
    "list_sample = [4, 2, 7, 1, 5, 8, 3, 6]\n",
    "\n",
    "def quick_sort(list_sample,running_count = 0,count = 0):\n",
    "    if len(list_sample) <= 1:\n",
    "        return list_sample\n",
    "    else:\n",
    "        middle_num = list_sample[0]\n",
    "        list_small = [i for i in list_sample if i < middle_num]\n",
    "        list_eq = [i for i in list_sample if i == middle_num]\n",
    "        list_big = [i for i in list_sample if i > middle_num]\n",
    "        print(\"列表分解结果\",list_small,list_eq,list_big)\n",
    "        return quick_sort(list_small) + list_eq + quick_sort(list_big)\n",
    "    \n",
    "print(quick_sort(list_sample))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "这是第1次运行：[2, 4, 7, 1, 5, 8, 3, 6]\n",
      "这是第2次运行：[2, 4, 7, 1, 5, 8, 3, 6]\n",
      "这是第3次运行：[2, 4, 1, 7, 5, 8, 3, 6]\n",
      "这是第4次运行：[2, 4, 1, 5, 7, 8, 3, 6]\n",
      "这是第5次运行：[2, 4, 1, 5, 7, 8, 3, 6]\n",
      "这是第6次运行：[2, 4, 1, 5, 7, 3, 8, 6]\n",
      "这是第7次运行：[2, 4, 1, 5, 7, 3, 6, 8]\n",
      "这是第8次运行：[2, 4, 1, 5, 7, 3, 6, 8]\n",
      "这是第9次运行：[2, 1, 4, 5, 7, 3, 6, 8]\n",
      "这是第10次运行：[2, 1, 4, 5, 7, 3, 6, 8]\n",
      "这是第11次运行：[2, 1, 4, 5, 7, 3, 6, 8]\n",
      "这是第12次运行：[2, 1, 4, 5, 3, 7, 6, 8]\n",
      "这是第13次运行：[2, 1, 4, 5, 3, 6, 7, 8]\n",
      "这是第14次运行：[1, 2, 4, 5, 3, 6, 7, 8]\n",
      "这是第15次运行：[1, 2, 4, 5, 3, 6, 7, 8]\n",
      "这是第16次运行：[1, 2, 4, 5, 3, 6, 7, 8]\n",
      "这是第17次运行：[1, 2, 4, 3, 5, 6, 7, 8]\n",
      "这是第18次运行：[1, 2, 4, 3, 5, 6, 7, 8]\n",
      "这是第19次运行：[1, 2, 4, 3, 5, 6, 7, 8]\n",
      "这是第20次运行：[1, 2, 4, 3, 5, 6, 7, 8]\n",
      "这是第21次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n",
      "这是第22次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n",
      "这是第23次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n",
      "这是第24次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n",
      "这是第25次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n",
      "这是第26次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n",
      "这是第27次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n",
      "这是第28次运行：[1, 2, 3, 4, 5, 6, 7, 8]\n"
     ]
    }
   ],
   "source": [
    "#冒泡排序\n",
    "list_sample = [4, 2, 7, 1, 5, 8, 3, 6]\n",
    "#list_sample = [4, 2, 1, 5, 3, 6,7,8]\n",
    "n = 1\n",
    "for i in range(len(list_sample)):\n",
    "    for j in range(len(list_sample)-i-1):\n",
    "        if list_sample[j] > list_sample[j+1]:\n",
    "               list_sample[j+1],list_sample[j] = list_sample[j], list_sample[j+1]\n",
    "        print(f'这是第{n}次运行：{list_sample}')\n",
    "        n += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from math import log\n",
    "\n",
    "x = np.arange(1,10,0.00001)\n",
    "plt.xlabel(\"x\")\n",
    "plt.ylabel(\"y\")\n",
    "plt.plot(x,x**2,x,[i * log(i,2) for i in x])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
